﻿Imports lbGlobalcom
Public Class fConversionEquipos
    Dim daMov As lbGlobalcom.dsMovimientoTableAdapters.MOV_MOVIMIENTOTableAdapter
    Dim daMovDtalle As lbGlobalcom.dsMovimientoTableAdapters.MOV_MOVIMIENTODETALLETableAdapter
    Dim daMovDesc As lbGlobalcom.dsMovimientoTableAdapters.MOV_DESCRIPCIONDETTableAdapter
    Dim dsMovCompra As dsMovimiento
    Dim dsMovSalida As dsMovimiento
    Dim dsMovTraslado As dsMovimiento
    Dim iTipoDoc As cTipoDocumento
    Dim iProducto As cProducto
    Dim cListaP As lbGlobalcom.cEncaListaPrecios
    Dim cDetLis As lbGlobalcom.cDetalleListaPrecios
    Dim iPer As cPeriodos
    Dim iFp As cFormasPago
    Private Sub btnBuscaDoc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaDoc.Click
        Try
            Dim fLDoc As New fListaMovimi
            fLDoc.SubClase = "INV"
            If fLDoc.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDDOCUMENTOTextBox.Text = fLDoc.mTipoDoc
                NUMEROTextBox.Text = fLDoc.mNumeroDoc
                daMov.FillByIdDocumentoNumero(DsMovimiento.MOV_MOVIMIENTO, IDDOCUMENTOTextBox.Text, NUMEROTextBox.Text)
                daMovDtalle.FillByIdDocumentoNumero(DsMovimiento.MOV_MOVIMIENTODETALLE, IDDOCUMENTOTextBox.Text, NUMEROTextBox.Text)
                daMovDesc.FillByIdDocumentoNumero(DsMovimiento.MOV_DESCRIPCIONDET, IDDOCUMENTOTextBox.Text, NUMEROTextBox.Text)
                Dim dc As DataColumn = New DataColumn("ACEPTADO", System.Type.GetType("System.Boolean"))
                DsMovimiento.MOV_MOVIMIENTODETALLE.Columns.Add(dc)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub

    Private Sub fConversionEquipos_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Try
            daMov = New lbGlobalcom.dsMovimientoTableAdapters.MOV_MOVIMIENTOTableAdapter
            daMovDtalle = New lbGlobalcom.dsMovimientoTableAdapters.MOV_MOVIMIENTODETALLETableAdapter
            daMovDesc = New lbGlobalcom.dsMovimientoTableAdapters.MOV_DESCRIPCIONDETTableAdapter
            dsMovCompra = New dsMovimiento
            dsMovSalida = New dsMovimiento
            dsMovTraslado = New dsMovimiento
            iPer = New cPeriodos()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub


    Private Sub btnBuscarTipodoc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscarTipodoc.Click
        Try
            Dim fLDoc As New fListaTipoDocs
            fLDoc.SubClase = "COM"
            If fLDoc.ShowDialog = Windows.Forms.DialogResult.OK Then
                txtDocCompra.Text = fLDoc.idTipoDoc
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub

    Private Sub btnBuscaBodega_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaBodega.Click
        Try
            Dim fBusBod As New fListaBodegas
            'fBusBod.idSede = IDSEDETextBox.Text
            If fBusBod.ShowDialog = Windows.Forms.DialogResult.OK Then
                txtBodegaDestino.Text = fBusBod.Bodega
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub

    Private Sub generarDocumentos()
        Try
            If validaAceptado(True) = 1 Then
                documentoSalida()
                documentoCompra()
            End If
            If validaAceptado(False) = 1 Then
                documentoTraslado()
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub

    Private Function validaAceptado(ByVal tipo As Boolean) As Integer
        Dim valido As Integer = 0
        Try
            For Each dr As dsMovimiento.MOV_MOVIMIENTODETALLERow In DsMovimiento.MOV_MOVIMIENTODETALLE
                If dr("ACEPTADO") = tipo Then
                    valido = 1
                End If
            Next
            Return valido
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Function

    Private Sub documentoSalida()
        Try
            iTipoDoc = New cTipoDocumento(txtDocSalida.Text)
            If iTipoDoc Is Nothing Then
                MessageBox.Show("El tipo de documento seleccionado no esta registrado", "Error en tipo de documento", MessageBoxButtons.OK, MessageBoxIcon.Stop)
            Else
                Dim dr As dsMovimiento.MOV_MOVIMIENTORow = DsMovimiento.MOV_MOVIMIENTO.Rows(0)
                Dim row As dsMovimiento.MOV_MOVIMIENTORow = dsMovSalida.MOV_MOVIMIENTO.NewMOV_MOVIMIENTORow()
                row.IDDOCUMENTO = txtDocSalida.Text
                row.NUMERO = lbGlobalcom.Consec.GetNumeroActual(txtDocSalida.Text, iTipoDoc.DocEs)
                row.IDSEDE = iTipoDoc.idSede
                row.IDBODEGAORIGEN = dr.IDBODEGADESTINO
                row.IDCCOSTO = dr.IDCCOSTO
                row.IDLISTA = dr.IDLISTA
                'If txtFormaPago.Text.Length > 0 Then
                '    row.IDFORMAPAGO = txtFormaPago.Text
                '    iFp = New cFormasPago(txtFormaPago.Text)
                row.FECHADOCUMENTO = Date.Now.Date
                'row.FECHAVENCIMIENTO = iFp.GetFechaVence(row.FECHADOCUMENTO)
                'End If
                'If txtIdProveedor.Text.Length > 0 Then
                '    row.IDTERCERO = txtIdProveedor.Text
                'End If
                dsMovSalida.MOV_MOVIMIENTO.AddMOV_MOVIMIENTORow(row)
                For Each drDetalle As dsMovimiento.MOV_MOVIMIENTODETALLERow In DsMovimiento.MOV_MOVIMIENTODETALLE.Rows
                    If drDetalle("ACEPTADO") = True Then
                        Dim rowDtalle As dsMovimiento.MOV_MOVIMIENTODETALLERow = dsMovSalida.MOV_MOVIMIENTODETALLE.NewMOV_MOVIMIENTODETALLERow()
                        rowDtalle.NUMERO = row.NUMERO
                        rowDtalle.IDDOCUMENTO = row.IDDOCUMENTO
                        rowDtalle.NUMEROLINEA = drDetalle.NUMEROLINEA
                        'iProducto = New cProducto(drDetalle.IDPRODUCTO)
                        rowDtalle.IDPRODUCTO = drDetalle.IDPRODUCTO
                        'rowDtalle.
                        rowDtalle.CANTIDAD = drDetalle.CANTIDAD
                        cListaP = New cEncaListaPrecios(row.IDLISTA)
                        cDetLis = New cDetalleListaPrecios
                        cDetLis = cListaP.DetalleLista(rowDtalle.IDPRODUCTO)
                        rowDtalle.VALORBASE = cDetLis.PrecioCosto
                        rowDtalle.VALORIVA = cDetLis.PrecioCosto * cDetLis.iProducto.iTipoIva.PorIva
                        dsMovSalida.MOV_MOVIMIENTODETALLE.AddMOV_MOVIMIENTODETALLERow(rowDtalle)
                        For Each drDesc As dsMovimiento.MOV_DESCRIPCIONDETRow In DsMovimiento.MOV_DESCRIPCIONDET.Rows
                            If drDetalle.NUMEROLINEA = drDesc.NUMEROLINEA And drDetalle.IDPRODUCTO = drDesc.IDPRODUCTO Then
                                Dim rowDesc As dsMovimiento.MOV_DESCRIPCIONDETRow = dsMovSalida.MOV_DESCRIPCIONDET.NewMOV_DESCRIPCIONDETRow()
                                rowDesc.NUMERO = row.NUMERO
                                rowDesc.IDDOCUMENTO = row.IDDOCUMENTO
                                rowDesc.NUMEROLINEA = drDesc.NUMEROLINEA
                                rowDesc.NUMEROPRODUCTO = drDesc.NUMEROPRODUCTO
                                rowDesc.IDPRODUCTO = rowDtalle.IDPRODUCTO
                                rowDesc.NUMEROREGISTRO = drDesc.NUMEROREGISTRO
                                rowDesc.TIPOSUBPROD = drDesc.TIPOSUBPROD
                                dsMovSalida.MOV_DESCRIPCIONDET.AddMOV_DESCRIPCIONDETRow(rowDesc)
                            End If
                        Next
                    End If
                Next
                SalvaCambios(dsMovSalida)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub

    Private Sub documentoCompra()
        Try
            iTipoDoc = New cTipoDocumento(txtDocCompra.Text)
            If iTipoDoc Is Nothing Then
                MessageBox.Show("El tipo de documento seleccionado no esta registrado", "Error en tipo de documento", MessageBoxButtons.OK, MessageBoxIcon.Stop)
            Else
                Dim dr As dsMovimiento.MOV_MOVIMIENTORow = DsMovimiento.MOV_MOVIMIENTO.Rows(0)
                Dim row As dsMovimiento.MOV_MOVIMIENTORow = dsMovCompra.MOV_MOVIMIENTO.NewMOV_MOVIMIENTORow()
                row.IDDOCUMENTO = txtDocCompra.Text
                row.NUMERO = lbGlobalcom.Consec.GetNumeroActual(txtDocCompra.Text, iTipoDoc.DocEs)
                row.IDSEDE = iTipoDoc.idSede
                row.IDBODEGADESTINO = txtBodegaDestino.Text
                row.IDCCOSTO = iTipoDoc.idCcosto
                row.IDLISTA = iTipoDoc.idLista
                If txtFormaPago.Text.Length > 0 Then
                    row.IDFORMAPAGO = txtFormaPago.Text
                    iFp = New cFormasPago(txtFormaPago.Text)
                    row.FECHADOCUMENTO = Date.Now.Date
                    row.FECHAVENCIMIENTO = iFp.GetFechaVence(row.FECHADOCUMENTO)
                End If
                If txtIdProveedor.Text.Length > 0 Then
                    row.IDTERCERO = txtIdProveedor.Text
                End If
                dsMovCompra.MOV_MOVIMIENTO.AddMOV_MOVIMIENTORow(row)
                For Each drDetalle As dsMovimiento.MOV_MOVIMIENTODETALLERow In DsMovimiento.MOV_MOVIMIENTODETALLE.Rows
                    If drDetalle("ACEPTADO") = True Then
                        Dim rowDtalle As dsMovimiento.MOV_MOVIMIENTODETALLERow = dsMovCompra.MOV_MOVIMIENTODETALLE.NewMOV_MOVIMIENTODETALLERow()
                        rowDtalle.NUMERO = row.NUMERO
                        rowDtalle.IDDOCUMENTO = row.IDDOCUMENTO
                        rowDtalle.NUMEROLINEA = drDetalle.NUMEROLINEA
                        iProducto = New cProducto(drDetalle.IDPRODUCTO)
                        rowDtalle.IDPRODUCTO = iProducto.productoEquivalente
                        'rowDtalle.
                        rowDtalle.CANTIDAD = drDetalle.CANTIDAD
                        cListaP = New cEncaListaPrecios(row.IDLISTA)
                        cDetLis = New cDetalleListaPrecios
                        cDetLis = cListaP.DetalleLista(rowDtalle.IDPRODUCTO)
                        rowDtalle.VALORBASE = cDetLis.PrecioCosto
                        rowDtalle.VALORIVA = cDetLis.PrecioCosto * cDetLis.iProducto.iTipoIva.PorIva
                        dsMovCompra.MOV_MOVIMIENTODETALLE.AddMOV_MOVIMIENTODETALLERow(rowDtalle)
                        For Each drDesc As dsMovimiento.MOV_DESCRIPCIONDETRow In DsMovimiento.MOV_DESCRIPCIONDET.Rows
                            If drDetalle.NUMEROLINEA = drDesc.NUMEROLINEA And drDetalle.IDPRODUCTO = drDesc.IDPRODUCTO Then
                                Dim rowDesc As dsMovimiento.MOV_DESCRIPCIONDETRow = dsMovCompra.MOV_DESCRIPCIONDET.NewMOV_DESCRIPCIONDETRow()
                                rowDesc.NUMERO = row.NUMERO
                                rowDesc.IDDOCUMENTO = row.IDDOCUMENTO
                                rowDesc.NUMEROLINEA = drDesc.NUMEROLINEA
                                rowDesc.NUMEROPRODUCTO = drDesc.NUMEROPRODUCTO
                                rowDesc.IDPRODUCTO = rowDtalle.IDPRODUCTO
                                rowDesc.NUMEROREGISTRO = drDesc.NUMEROREGISTRO
                                rowDesc.TIPOSUBPROD = drDesc.TIPOSUBPROD
                                dsMovCompra.MOV_DESCRIPCIONDET.AddMOV_DESCRIPCIONDETRow(rowDesc)
                            End If
                        Next
                    End If
                Next
                SalvaCambios(dsMovCompra)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub

    Private Sub documentoTraslado()
        Try
            iTipoDoc = New cTipoDocumento(IDDOCUMENTOTextBox.Text)
            If iTipoDoc Is Nothing Then
                MessageBox.Show("El tipo de documento seleccionado no esta registrado", "Error en tipo de documento", MessageBoxButtons.OK, MessageBoxIcon.Stop)
            Else
                Dim dr As dsMovimiento.MOV_MOVIMIENTORow = DsMovimiento.MOV_MOVIMIENTO.Rows(0)
                Dim row As dsMovimiento.MOV_MOVIMIENTORow = dsMovTraslado.MOV_MOVIMIENTO.NewMOV_MOVIMIENTORow()
                row.IDDOCUMENTO = IDDOCUMENTOTextBox.Text
                row.NUMERO = lbGlobalcom.Consec.GetNumeroActual(IDDOCUMENTOTextBox.Text, iTipoDoc.DocEs)
                row.IDSEDE = dr.IDSEDE
                row.IDBODEGAORIGEN = dr.IDBODEGADESTINO
                row.IDBODEGADESTINO = dr.IDBODEGAORIGEN
                row.IDCCOSTO = dr.IDCCOSTO
                row.IDLISTA = dr.IDLISTA
                'If txtFormaPago.Text.Length > 0 Then
                '    row.IDFORMAPAGO = txtFormaPago.Text
                '    iFp = New cFormasPago(txtFormaPago.Text)
                row.FECHADOCUMENTO = Date.Now.Date
                'row.FECHAVENCIMIENTO = iFp.GetFechaVence(row.FECHADOCUMENTO)
                'End If
                'If txtIdProveedor.Text.Length > 0 Then
                '    row.IDTERCERO = txtIdProveedor.Text
                'End If
                dsMovTraslado.MOV_MOVIMIENTO.AddMOV_MOVIMIENTORow(row)
                For Each drDetalle As dsMovimiento.MOV_MOVIMIENTODETALLERow In DsMovimiento.MOV_MOVIMIENTODETALLE.Rows
                    If drDetalle("ACEPTADO") = False Then
                        Dim rowDtalle As dsMovimiento.MOV_MOVIMIENTODETALLERow = dsMovTraslado.MOV_MOVIMIENTODETALLE.NewMOV_MOVIMIENTODETALLERow()
                        rowDtalle.NUMERO = row.NUMERO
                        rowDtalle.IDDOCUMENTO = row.IDDOCUMENTO
                        rowDtalle.NUMEROLINEA = drDetalle.NUMEROLINEA
                        'iProducto = New cProducto(drDetalle.IDPRODUCTO)
                        rowDtalle.IDPRODUCTO = drDetalle.IDPRODUCTO
                        'rowDtalle.
                        rowDtalle.CANTIDAD = drDetalle.CANTIDAD
                        cListaP = New cEncaListaPrecios(row.IDLISTA)
                        cDetLis = New cDetalleListaPrecios
                        cDetLis = cListaP.DetalleLista(rowDtalle.IDPRODUCTO)
                        rowDtalle.VALORBASE = cDetLis.PrecioCosto
                        rowDtalle.VALORIVA = cDetLis.PrecioCosto * cDetLis.iProducto.iTipoIva.PorIva
                        dsMovTraslado.MOV_MOVIMIENTODETALLE.AddMOV_MOVIMIENTODETALLERow(rowDtalle)
                        For Each drDesc As dsMovimiento.MOV_DESCRIPCIONDETRow In DsMovimiento.MOV_DESCRIPCIONDET.Rows
                            If drDetalle.NUMEROLINEA = drDesc.NUMEROLINEA And drDetalle.IDPRODUCTO = drDesc.IDPRODUCTO Then
                                Dim rowDesc As dsMovimiento.MOV_DESCRIPCIONDETRow = dsMovTraslado.MOV_DESCRIPCIONDET.NewMOV_DESCRIPCIONDETRow()
                                rowDesc.NUMERO = row.NUMERO
                                rowDesc.IDDOCUMENTO = row.IDDOCUMENTO
                                rowDesc.NUMEROLINEA = drDesc.NUMEROLINEA
                                rowDesc.NUMEROPRODUCTO = drDesc.NUMEROPRODUCTO
                                rowDesc.IDPRODUCTO = rowDtalle.IDPRODUCTO
                                rowDesc.NUMEROREGISTRO = drDesc.NUMEROREGISTRO
                                rowDesc.TIPOSUBPROD = drDesc.TIPOSUBPROD
                                dsMovTraslado.MOV_DESCRIPCIONDET.AddMOV_DESCRIPCIONDETRow(rowDesc)
                            End If
                        Next
                    End If
                Next
                SalvaCambios(dsMovTraslado)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub


    Private Sub SalvaCambios(ByVal dsMov As dsMovimiento)
        Dim Conn As Oracle.DataAccess.Client.OracleConnection
        Dim tran As Oracle.DataAccess.Client.OracleTransaction
        Try
            Conn = New Oracle.DataAccess.Client.OracleConnection(My.Settings.ConnectionString)
            Conn.Open()
            tran = Conn.BeginTransaction
            Dim AfecInv As New cAfectaIventarios(dsMov, iTipoDoc, iPer, False, "N", Conn)
            AfecInv.AfectaInventarios()
            AfecInv = Nothing
            Dim SalvaMov As cSalvaMovimiento
            SalvaMov = New cSalvaMovimiento(Conn, DsMovimiento.MOV_MOVIMIENTO.GetChanges, DsMovimiento.MOV_MOVIMIENTODETALLE.GetChanges, DsMovimiento.MOV_DESCRIPCIONDET.GetChanges, 1)
            DsMovimiento.AcceptChanges()
            SalvaMov = Nothing
            tran.Commit()
            Conn.Close()
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnConvertir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConvertir.Click
        Try
            If IDDOCUMENTOTextBox.Text.Length > 0 And NUMEROTextBox.Text.Length > 0 And txtDocCompra.Text.Length > 0 And txtDocSalida.Text.Length > 0 And txtBodegaDestino.Text.Length > 0 Then
                generarDocumentos()
            Else
                MessageBox.Show("Debe ingresar todos los datos", "datos", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub

    Private Sub btnBuscaProveedor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaProveedor.Click
        Try
            Dim fBT As New fBuscaTercero
            fBT.TipoTercero = "Proveedor"
            If fBT.ShowDialog = Windows.Forms.DialogResult.OK Then
                txtIdProveedor.Text = fBT.midTercero
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    'Private Sub btnBuscaTras_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaSalida.Click
    '    Try
    '        Dim fLDoc As New fListaTipoDocs
    '        fLDoc.SubClase = "INV"
    '        If fLDoc.ShowDialog = Windows.Forms.DialogResult.OK Then
    '            txtDocSalida.Text = fLDoc.idTipoDoc
    '        End If
    '    Catch ex As Exception
    '        MessageBox.Show(ex.Message)
    '        lbGlobalcom.cError.SalvaError(ex, "Henry")
    '    End Try
    'End Sub

    'Private Sub ActualizaFormaPago(ByVal FP As String)
    '    iFP = New cFormasPago(FP)
    '    Try
    '        FECHAVENCIMIENTODateTimePicker.Value = iFP.GetFechaVence(FECHADOCUMENTODateTimePicker.Value)
    '    Catch ex As Exception
    '        lbGlobalcom.cError.SalvaError(ex, "Samuel")
    '        MessageBox.Show(ex.Message)
    '    End Try
    'End Sub


    Private Sub btnBuscaFp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaFp.Click
        Try
            Dim fLisFP As New fListaFormasPago
            If fLisFP.ShowDialog = Windows.Forms.DialogResult.OK Then
                txtFormaPago.Text = fLisFP.FP
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnBuscaSalida_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaSalida.Click
        Try
            Dim fLDoc As New fListaTipoDocs
            fLDoc.SubClase = "INV"
            If fLDoc.ShowDialog = Windows.Forms.DialogResult.OK Then
                txtDocSalida.Text = fLDoc.idTipoDoc
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub
End Class